“Journaling” of cached meta-data updates in a Non Volatile Storage device (NVS) to maintain consistency of meta-data while performing fast updates, is a widely used approach in storage subsystems controllers. US Patent publication US 2002/0083263 A1 entitled (“DASD-free nonvolatile updates”) describes an innovative mechanism, partitioning the NVS space into fixed sized blocks, and dynamically assigning the NVS blocks to meta-data entities (e.g. meta-data logical blocks). An NVS block serves as a journal page for the meta-data entity (i.e. the content data stored in the page), and the association is maintained until the meta-data is hardened to DASD or deleted/discarded therefrom, i.e. the Journal is no longer necessary for recovery. Note that whenever the term hardened is used it should be interpreted as hardened or deleted or discarded.
Having a constant size Journal page (which is the size of an NVS block) may have an adverse effect on the system's performance. Smaller blocks means more blocks for a fixed size NVS, allowing more entities to be associated with journal pages at a time—reducing the frequency of having to harden entities when a lot of entities are being updated. On the other hand, larger blocks allow more updates to be recorded in a journal page—reducing the frequency of having to harden an entity that is updated frequently.
It is very difficult to adjust the block size for optimal performance. In fact, it is practically impossible, because different operational environments dictate different optimal block size. A variable-sized journal page that adjusts to the frequency of updates of its associated entity, can provide better system performance than a fixed size page, in any run-time environment, and especially in the heterogeneous and dynamic environment that is typical to large storage subsystems.
However, having a variable size page (a page that can grow in run-time) is a challenging problem in a system that must be consistent and self-descriptive at any given point in time. Note also that one can atomically update only a contiguous, limited in size, NVS memory space. In other words, it is practically impossible to maintain contiguous NVS memory pages that can dynamically grow, depending upon the particular application.
There is, accordingly, a need in the art to provide for a method and system of chaining NVS blocks to form fragmented, arbitrarily long pages.